<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Langage de programmation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Langage_de_programmation"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Langage_de_programmation rootpage-Langage_de_programmation skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Langage de programmation</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><div class="infobox_v3 infobox infobox--frwiki noarchive large"><div class="entete" style="background-color:#E8E8E8"><div>Langage de programmation</div></div><div><div class="images" style="padding:2px 0"></div></div><table><tbody><tr class=""><th scope="row">Type</th><td class=""><div>
<span class="wd_p279"><a href="Langage_informatique" title="Langage informatique">Langage informatique</a></span></div></td></tr></tbody></table><table><caption style="text-align:center;background-color:#E8E8E8">Caractéristiques</caption><tbody><tr class=""><th scope="row">Composé de</th><td class=""><div>
<span class="wd_p527">Syntaxe de codage <small>(<a href="https://en.wikipedia.org/wiki/Syntax_(programming_languages)" class="extiw external" title="en:Syntax (programming languages)"><span class="indicateur-langue" title="Article sur Wikipédia en anglais">en</span></a>)</small><br>Execution model <small>(<a href="https://en.wikipedia.org/wiki/Execution_model" class="extiw external" title="en:Execution model"><span class="indicateur-langue" title="Article sur Wikipédia en anglais">en</span></a>)</small><br><a href="Biblioth%C3%A8que_standard" title="Bibliothèque standard">Bibliothèque standard</a><br>Système de typage <small>(<a href="https://en.wikipedia.org/wiki/Type_system" class="extiw external" title="en:Type system"><span class="indicateur-langue" title="Article sur Wikipédia en anglais">en</span></a>)</small></span></div></td></tr></tbody></table><table><caption style="text-align:center;background-color:#E8E8E8">Utilisation</caption><tbody><tr class=""><th scope="row">Usage</th><td class=""><div>
<span class="wd_p366"><a href="Programmation_informatique" title="Programmation informatique">Programmation</a></span></div></td></tr></tbody></table></div>
<p>Un <b>langage de programmation</b> est un <a href="Langage_informatique" title="Langage informatique">langage informatique</a> destiné à formuler des <a href="Algorithme" title="Algorithme">algorithmes</a> et produire des <a href="Programme_informatique" title="Programme informatique">programmes informatiques</a> qui les appliquent. D'une manière similaire à une langue naturelle, il est composé d'un <a href="Alphabet" title="Alphabet">alphabet</a>, d'un <a href="Lexique" title="Lexique">vocabulaire</a>, de règles de <a href="Grammaire" title="Grammaire">grammaire</a>, de <a href="Sens_(linguistique)" title="Sens (linguistique)">significations</a>, mais aussi d'un <a href="Environnement_(informatique)" title="Environnement (informatique)">environnement de traduction</a> censé rendre sa <a href="Syntaxe" title="Syntaxe">syntaxe</a> compréhensible par la machine<sup id="cite_ref-gabbrielli_1-0" class="reference"><a href="#cite_note-gabbrielli-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-louden_2-0" class="reference"><a href="#cite_note-louden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.
</p><p>Les langages de programmation permettent de décrire, d'une part, les <a href="Structure_de_donn%C3%A9es" title="Structure de données">structures des données</a> qui seront manipulées par l'<a href="Appareil_informatique" title="Appareil informatique">appareil informatique</a>, et, d'autre part, d'indiquer comment sont effectuées les manipulations et selon quels <a href="Algorithme" title="Algorithme">algorithmes</a>.
</p><p>Ils servent de moyens de communication par lesquels le programmeur communique avec l'ordinateur, mais aussi avec d'autres programmeurs ; les programmes étant d'ordinaire écrits, lus, compris et modifiés par une équipe de programmeurs<sup id="cite_ref-baindridge_3-0" class="reference"><a href="#cite_note-baindridge-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p><p>Plusieurs <a href="Environnement_de_d%C3%A9veloppement" title="Environnement de développement">environnement de développement</a> et <a href="Chatbot" title="Chatbot">agents conversationnels</a> possèdent des fonctionnalités de lecture, interprétation et écriture de programme.
</p><p>Un langage de programmation est mis en œuvre par un <a href="Traduction_automatique" title="Traduction automatique">traducteur automatique</a> : <a href="Compilateur" title="Compilateur">compilateur</a> ou <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interprète</a>. Un compilateur est un programme informatique qui transforme dans un premier temps un <a href="Code_source" title="Code source">code source</a> écrit dans un langage de programmation donné en un code cible qui pourra être directement exécuté par un ordinateur, à savoir un programme en <a href="Langage_machine" title="Langage machine">langage machine</a> ou en <a href="Bytecode" title="Bytecode">code intermédiaire</a><sup id="cite_ref-louden_2-1" class="reference"><a href="#cite_note-louden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>, tandis que l’interprète réalise cette traduction « à la volée ».
</p><p>Les langages de programmation offrent différentes possibilités d'<a href="Abstraction_(philosophie)" title="Abstraction (philosophie)">abstraction</a> et une notation proche de l'<a href="Alg%C3%A8bre_g%C3%A9n%C3%A9rale" title="Algèbre générale">algèbre</a>, permettant de décrire de manière concise et facile à saisir les opérations de manipulation de données et l'évolution du déroulement du programme en fonction des situations.
</p><p>La possibilité d'écriture abstraite libère l'esprit du programmeur d'un travail superflu, notamment de prise en compte des spécificités du <a href="Mat%C3%A9riel_informatique" title="Matériel informatique">matériel informatique</a>, et lui permet ainsi de se concentrer sur des problèmes plus avancés<sup id="cite_ref-louden_2-2" class="reference"><a href="#cite_note-louden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.
</p><p>Chaque langage de programmation supporte une ou plusieurs approches de la <a href="Programmation_informatique" title="Programmation informatique">programmation</a> – <i><a href="Paradigme_(programmation)" title="Paradigme (programmation)">paradigmes</a></i>. Les notions induisant le paradigme font partie du langage de programmation et permettent au programmeur d'exprimer dans le langage une solution qui a été imaginée selon ce paradigme.
</p><p>Les premiers langages de programmation ont été créés dans les années 1950, en même temps que l'avènement des <a href="Histoire_de_l'informatique" title="Histoire de l'informatique">ordinateurs</a>. Cependant, de nombreux concepts de programmation ont été initiés par un langage ou parfois plusieurs langages, avant d'être améliorés puis étendus dans les langages suivants.
</p><p>La plupart du temps la conception d'un langage de programmation a été fortement influencée par l'expérience acquise avec les langages précédents<sup id="cite_ref-watt_4-0" class="reference"><a href="#cite_note-watt-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Définition"><span id="D.C3.A9finition"></span>Définition</h2></div>
<p>Un langage de programmation est construit à partir d'une <a href="Grammaire_formelle" title="Grammaire formelle">grammaire formelle</a>, qui inclut des symboles et des règles syntaxiques, auxquels sont associées des règles sémantiques. Ces éléments sont plus ou moins complexes selon la capacité du langage.
</p><p>Les modes de fonctionnement et de définition de la <a href="Th%C3%A9orie_de_la_complexit%C3%A9_(informatique_th%C3%A9orique)" title="Théorie de la complexité (informatique théorique)">complexité</a> d'un langage de programmation sont généralement déterminés par leur appartenance à l'un des degrés de la <a href="Hi%C3%A9rarchie_de_Chomsky" title="Hiérarchie de Chomsky">hiérarchie de Chomsky</a><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>.
</p><p>Sous un angle théorique, tout <a href="Langage_informatique" title="Langage informatique">langage informatique</a> peut être qualifié de langage de programmation s'il est <a href="Turing-complet" title="Turing-complet">Turing-complet</a>, c'est-à-dire qu'il permet de représenter toutes les <a href="Fonction_r%C3%A9cursive" title="Fonction récursive">fonctions calculables</a> au sens de <a href="Alan_Turing" title="Alan Turing">Turing</a> et <a href="Alonzo_Church" title="Alonzo Church">Church</a> (en admettant néanmoins pour exception à la théorie que la <a href="M%C3%A9moire_(informatique)" title="Mémoire (informatique)">mémoire des ordinateurs</a> n'est pas un espace infini)<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>.
</p>
<dl><dt>Les <i>règles de <a href="Syntaxe" title="Syntaxe">syntaxe</a></i></dt>
<dd>Définies par une <a href="Grammaire_formelle" title="Grammaire formelle">grammaire formelle</a>, elles régissent les différentes manières dont les éléments du langage peuvent être combinés pour obtenir des programmes<sup id="cite_ref-louden_2-3" class="reference"><a href="#cite_note-louden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.</dd>
<dd>La ponctuation (par exemple l'apposition d'un symbole <b>;</b> en fin de ligne d'instruction d'un programme) relève de la syntaxe.</dd>
<dt>Le <i>vocabulaire</i></dt>
<dd>Parmi les éléments du langage, le vocabulaire représente l'ensemble des <a href="Instruction_informatique" title="Instruction informatique">instructions</a> construites d’après des <i>symboles</i>. L'instruction peut être <a href="Mn%C3%A9motechnique" title="Mnémotechnique">mnémotechnique</a> ou uniquement symbolique comme quand elle est représentée par des <i>symboles d'opérations</i> tels que des opérateurs <a href="Arithm%C3%A9tique" title="Arithmétique">arithmétiques</a> (« + » et « - ») ou <a href="Bool%C3%A9en" title="Booléen">booléens</a> (&& pour le <a href="Conjonction_logique" title="Conjonction logique">et logique</a> par exemple).</dd>
<dd>On parle aussi parfois de <i>mot clé</i> pour désigner une instruction (par abus de langage, car le concept de mot clé ne recouvre pas celui des symboles qui font pourtant eux aussi partie du <i>vocabulaire</i>).</dd>
<dt>La <i><a href="S%C3%A9mantique" title="Sémantique">sémantique</a></i></dt>
<dd>Les règles de <i><a href="S%C3%A9mantique" title="Sémantique">sémantique</a></i> définissent le sens de chacune des phrases qui peuvent être construites dans le langage, en particulier quels seront les effets de la phrase lors de l'exécution du programme<sup id="cite_ref-louden_2-4" class="reference"><a href="#cite_note-louden-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.</dd>
<dd>La science l’étudiant est la <a href="S%C3%A9mantique_des_langages_de_programmation" title="Sémantique des langages de programmation">sémantique des langages de programmation</a>.</dd>
<dt>L’<i>alphabet</i></dt>
<dd>L'alphabet des langages de programmation est basé sur les normes courantes comme <a href="American_Standard_Code_for_Information_Interchange" title="American Standard Code for Information Interchange">ASCII</a>, qui comporte les lettres de A à Z sans accent, des chiffres et des symboles<sup id="cite_ref-kedar_7-0" class="reference"><a href="#cite_note-kedar-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>, <a href="American_National_Standards_Institute" title="American National Standards Institute">ANSI</a> ou <a href="Unicode" title="Unicode">Unicode</a> pour la plupart des langages modernes (dans lesquels l'utilisation se limite en général aux chaînes de caractères littérales et aux commentaires, avec quelques exceptions notables comme <a href="C_Sharp" title="C Sharp">C♯</a> qui autorisent également les identifiants unicode).</dd></dl>
<p>La plupart des langages de programmation peuvent prévoir des éléments de structure complémentaires, des méthodes procédurales, des définitions temporaires et variables ainsi que des identifiants :
</p>
<dl><dt>Les <i>commentaires</i></dt>
<dd>Les <i><a href="Commentaire_(informatique)" title="Commentaire (informatique)">commentaires</a></i> sont des textes qui ne seront pas traduits. Ils peuvent être ajoutés dans les programmes pour y laisser des explications. Les commentaires sont délimités par des marques qui diffèrent d'un langage de programmation à l'autre tels que <span class="citation">« -- »</span>, <span class="citation">« /* »</span> ou <span class="citation">« // »</span><sup id="cite_ref-kedar_7-1" class="reference"><a href="#cite_note-kedar-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>.</dd>
<dt>Les <i>identifiants</i></dt>
<dd>Les éléments constitutifs du programme, tels que les <i>variables</i>, les <i>procédures</i> ou les <i>types</i> servent à organiser le programme et son fonctionnement.</dd>
<dd>On peut ainsi, par exemple, diviser un programme en <a href="Routine_(informatique)" title="Routine (informatique)">fonctions</a> ou lui donner une structure par <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">objets</a> : ces éléments de structure sont définis par des identifiants ou des procédures par <i>mot clé</i> selon le langage.</dd></dl>
<div class="mw-heading mw-heading2"><h2 id="Utilisation">Utilisation</h2></div>
<p>Un langage de programmation offre un cadre pour élaborer des algorithmes et exprimer des <a href="Diagramme_de_flux" title="Diagramme de flux">diagrammes de flux</a><sup id="cite_ref-ITL_8-0" class="reference"><a href="#cite_note-ITL-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-kedar_7-2" class="reference"><a href="#cite_note-kedar-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>.
</p><p>Il permet, en particulier, de décrire les <a href="Structure_de_donn%C3%A9es" title="Structure de données">structures des données</a> qui seront manipulées par l'appareil informatique et quelles seront les manipulations. Un langage de programmation sert de moyen de communication avec l'ordinateur, mais aussi entre programmeurs : les programmes étant d'ordinaire écrits, lus et modifiés par une équipe de programmeurs<sup id="cite_ref-baindridge_3-1" class="reference"><a href="#cite_note-baindridge-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p><p>Un langage de programmation offre un ensemble de notions qui peuvent être utilisées comme primitives pour développer des algorithmes. Les programmeurs apprécient que le langage soit clair, simple et unifié, qu'il y ait un minimum de notions qui peuvent être combinées selon des règles simples et régulières.
</p><p>Les qualités d'un langage de programmation influent sur la facilité avec laquelle les programmes pourront être écrits, testés, puis plus tard compris et modifiés<sup id="cite_ref-kedar_7-3" class="reference"><a href="#cite_note-kedar-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>.
</p><p>La facilité d'utilisation, la <a href="Portabilit%C3%A9_(informatique)" title="Portabilité (informatique)">portabilité</a> et la clarté sont des qualités appréciées des langages de programmation.
</p><p>La facilité d'utilisation, qui dépend de la syntaxe, du vocabulaire et des symboles, influence la lisibilité des programmes écrits dans ce langage et la durée d'apprentissage.
</p><p>La portabilité permet à un programme écrit pour être exécuté par une <a href="Plate-forme_(informatique)" class="mw-redirect" title="Plate-forme (informatique)">plateforme informatique</a> donnée (un <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a>) d'être transféré en vue d'être exécuté sur une autre plateforme<sup id="cite_ref-ITL_8-1" class="reference"><a href="#cite_note-ITL-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.
</p><p>Les programmeurs apprécient que la syntaxe permette d'exprimer la structure logique inhérente au programme. Un des soucis en programmation est d'éviter des pannes, qu'il soit possible de les détecter, les éviter et les rectifier ; ceci est rendu possible par des mécanismes internes des langages de programmation. Des vérifications implicites sont parfois effectuées en vue de déceler des problèmes<sup id="cite_ref-ITL_8-2" class="reference"><a href="#cite_note-ITL-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.
</p><p>Les programmeurs apprécient qu'un langage de programmation soit en ligne avec les bonnes pratiques de programmation et d'<a href="Ing%C3%A9nierie" title="Ingénierie">ingénierie</a>, qu'il encourage la structuration du programme, facilite la maintenance des programmes et qu'il dissuade, voire interdise les mauvaises pratiques<sup id="cite_ref-ITL_8-3" class="reference"><a href="#cite_note-ITL-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.
</p><p>L'utilisation de l'instruction <code><a href="Goto_(informatique)" title="Goto (informatique)">goto</a></code>, par exemple, qui existe depuis les premiers langages de programmation, est considérée comme une mauvaise pratique. Son utilisation est déconseillée, voire impossible dans les langages de programmation récents<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>.
</p><p>L'alignement sur les <a href="Norme_et_standard_techniques" title="Norme et standard techniques">standards industriels</a>, la possibilité d'utiliser des fonctionnalités écrites dans un autre langage de programmation et l'exécution simultanée de plusieurs <a href="Thread_(informatique)" title="Thread (informatique)">threads</a> sont des possibilités appréciées des langages de programmation<sup id="cite_ref-ITL_8-4" class="reference"><a href="#cite_note-ITL-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Notions_courantes">Notions courantes</h3></div>
<p>Un langage de programmation repose sur un ensemble de notions telles que les <a href="Instruction_informatique" title="Instruction informatique">instructions</a>, les <a href="Variable_(informatique)" title="Variable (informatique)">variables</a>, les <a href="Type_(informatique)" title="Type (informatique)">types</a> et les procédures ou fonctions, qui peuvent être utilisées comme primitives pour développer des algorithmes<sup id="cite_ref-thakare_10-0" class="reference"><a href="#cite_note-thakare-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Une_instruction">Une instruction</h4></div>
<p>Un ordre donné à un ordinateur<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Une_variable">Une variable</h4></div>
<p>Un nom utilisé dans un programme pour faire référence à une donnée manipulée par programme.
</p>
<div class="mw-heading mw-heading4"><h4 id="Une_constante">Une constante</h4></div>
<p>Un nom utilisé pour faire référence à une valeur permanente.
</p>
<div class="mw-heading mw-heading4"><h4 id="Une_expression_littérale"><span id="Une_expression_litt.C3.A9rale"></span>Une expression littérale</h4></div>
<p>Une valeur mentionnée en toutes lettres dans le programme<sup id="cite_ref-thakare_10-1" class="reference"><a href="#cite_note-thakare-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Un_type">Un <a href="Type_(informatique)" title="Type (informatique)">type</a></h4></div>
<p>Chaque donnée a une classification, celle-ci influe sur la plage de valeurs possibles, les opérations qui peuvent être effectuées et la représentation de la donnée sous forme de <a href="Bit" title="Bit">bits</a><sup id="cite_ref-thakare_10-2" class="reference"><a href="#cite_note-thakare-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>. Chaque langage de programmation offre une gamme de types <i>primitifs</i>, incorporés dans le langage. Certains langages offrent la possibilité de créer des nouveaux types.
</p><p>Les types de données primitifs courants sont les <a href="Entier_relatif" title="Entier relatif">nombres entiers</a>, les <a href="Nombre_r%C3%A9el" title="Nombre réel">nombres réels</a>, le <a href="Bool%C3%A9en" title="Booléen">booléen</a>, les <a href="Cha%C3%AEne_de_caract%C3%A8res" title="Chaîne de caractères">chaînes de caractères</a> et les <a href="Pointeur_(programmation)" title="Pointeur (programmation)">pointeurs</a>.
</p><p>Plus précisément, le type <a href="Bool%C3%A9en" title="Booléen">booléen</a> est un type qui n'a que deux valeurs, <i>vrai</i> et <i>faux</i>, tandis que le type <a href="Pointeur_(programmation)" title="Pointeur (programmation)">pointeur</a> fait référence à une donnée qui se trouve quelque part en mémoire<sup id="cite_ref-thakare_10-3" class="reference"><a href="#cite_note-thakare-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Une_structure_de_données"><span id="Une_structure_de_donn.C3.A9es"></span>Une structure de données</h4></div>
<p>Une manière caractéristique d'organiser un ensemble de données en mémoire, qui influe sur les algorithmes utilisés pour les manipuler.
</p><p>Les structures courantes sont les <a href="Tableau_(structure_de_donn%C3%A9es)" title="Tableau (structure de données)">tableaux</a>, les <a href="Enregistrement_(stockage_d'informations)" title="Enregistrement (stockage d'informations)">enregistrements</a>, les <a href="Liste_(informatique)" title="Liste (informatique)">listes</a>, les <a href="Pile_(informatique)" title="Pile (informatique)">piles</a>, les <a href="File_(structure_de_donn%C3%A9es)" title="File (structure de données)">files</a> et les <a href="Arbre_enracin%C3%A9" title="Arbre enraciné">arbres</a><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Une_déclaration"><span id="Une_d.C3.A9claration"></span>Une déclaration</h4></div>
<p>Une phrase de programme qui sert à renseigner au traducteur (<a href="Compilateur" title="Compilateur">compilateur</a>, <a href="Interpr%C3%A9teur_de_commandes" title="Interpréteur de commandes">interpréteur</a>...) les noms et les caractéristiques des éléments du programme tels que des variables, des procédures, de types<sup id="cite_ref-baindridge_3-2" class="reference"><a href="#cite_note-baindridge-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>, etc.
</p><p>Des vérifications sont effectuées au moment de la compilation ou lors de l'exécution du programme, pour assurer que les opérations du programme sont possibles avec les types de données qui sont utilisés. Dans un langage <i>fortement typé</i>, chaque élément du programme a un type unique, connu et vérifié au moment de la compilation, ce qui permet de déceler des erreurs avant d'exécuter le programme<sup id="cite_ref-baindridge_3-3" class="reference"><a href="#cite_note-baindridge-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Les_procédures,_fonctions,_méthodes"><span id="Les_proc.C3.A9dures.2C_fonctions.2C_m.C3.A9thodes"></span>Les procédures, fonctions, méthodes</h4></div>
<p>Divers langages de programmation offrent la possibilité d'isoler un fragment de programme et d'en faire une opération générale, paramétrable, susceptible d'être utilisée de façon répétée. Ces fragments sont appelés <i>procédures</i>, <i>fonctions</i> ou <i>méthodes</i>, selon le paradigme.
</p>
<div class="mw-heading mw-heading4"><h4 id="Les_modules">Les modules</h4></div>
<p>Les langages de programmation peuvent également offrir la possibilité de découper un programme en plusieurs pièces appelées <i>modules</i>, chacune ayant un rôle déterminé, puis de combiner les pièces<sup id="cite_ref-baindridge_3-4" class="reference"><a href="#cite_note-baindridge-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p><p>Les notions de <i>procédure</i> et de <i>module</i> sont destinées à faciliter la création de programmes complexes et volumineux en assistant la prise en charge de cette complexité. Ces fonctions permettent en particulier la modularité et l'<a href="Abstraction_(informatique)" title="Abstraction (informatique)">abstraction</a><sup id="cite_ref-baindridge_3-5" class="reference"><a href="#cite_note-baindridge-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Paradigmes">Paradigmes</h2></div>
<p>Un <i>paradigme</i> est une façon d'approcher la programmation<sup id="cite_ref-bansal_13-0" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Chaque paradigme amène sa philosophie de la programmation ; une fois qu'une solution a été imaginée par un programmeur selon un certain paradigme, un langage de programmation qui suit ce paradigme permettra de l'exprimer<sup id="cite_ref-jana_14-0" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. Impératif, déclaratif, fonctionnel, logique, orienté objet, concurrent, visuel, événementiel et basé web sont des paradigmes de programmation<sup id="cite_ref-bansal_13-1" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Chaque langage de programmation reflète un ou plusieurs paradigmes, apportant un ensemble de notions qui peuvent être utilisées pour exprimer une solution à un problème de programmation<sup id="cite_ref-jana_14-1" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>.
</p><p>Au cours de l'histoire, les scientifiques et les programmeurs ont identifié les avantages et les limitations d'un style de programmation et apporté de nouveaux styles<sup id="cite_ref-bansal_13-2" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p><p>La plupart des langages de programmation contemporains permettent d'adopter plusieurs paradigmes de programmation<sup id="cite_ref-bansal_13-3" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> à condition que ceux-ci soient compatibles.
</p>
<div class="mw-heading mw-heading3"><h3 id="Impératif_(ou_procédural)"><span id="Imp.C3.A9ratif_.28ou_proc.C3.A9dural.29"></span>Impératif (ou procédural)</h3></div>
<p>Le paradigme <a href="Programmation_imp%C3%A9rative" title="Programmation impérative">impératif</a> ou <a href="Programmation_proc%C3%A9durale" title="Programmation procédurale">procédural</a> est basé sur le principe de l'exécution étape par étape des instructions tout comme on réalise une recette de cuisine. Il est basé sur le principe de la <a href="Architecture_de_von_Neumann" title="Architecture de von Neumann">machine de Von Neumann</a><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>.
</p><p>Un ensemble d'instructions de contrôle de flux d'exécution permet de contrôler l'ordre dans lequel sont exécutées les <a href="Instruction_informatique" title="Instruction informatique">instructions</a> qui décrivent les étapes.
</p><p>Le <a href="C_(langage)" title="C (langage)">C</a>, le <a href="Pascal_(langage)" title="Pascal (langage)">Pascal</a>, le <a href="Fortran" title="Fortran">Fortran</a> et le <a href="Cobol" title="Cobol">Cobol</a> sont des exemples de langage de programmation qui implémentent le paradigme impératif<sup id="cite_ref-jana_14-2" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Déclaratif"><span id="D.C3.A9claratif"></span>Déclaratif</h3></div>
<p>Il y a essentiellement deux paradigmes déclaratifs ; ce sont le paradigme fonctionnel et le paradigme logique. En paradigme fonctionnel, le programme décrit des fonctions mathématiques. En paradigme logique, il décrit des prédicats : c'est-à-dire des déclarations qui, une fois instanciées, peuvent être vraies ou fausses ou ne pas recevoir de valeur de vérité (quand l'évaluation du prédicat ne se termine pas)<sup id="cite_ref-bansal_13-4" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Dans un modèle d'implantation, une <a href="Machine_abstraite" title="Machine abstraite">machine abstraite</a> effectue les opérations nécessaires pour calculer le résultat de chaque fonction<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> ou chaque prédicat. Dans ces paradigmes, une variable n'est pas modifiée par <a href="Affectation_(informatique)" title="Affectation (informatique)">affectation</a><sup id="cite_ref-bansal_13-5" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Une des caractéristiques principales<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> est la <a href="Transparence_r%C3%A9f%C3%A9rentielle" title="Transparence référentielle">transparence référentielle</a>, qui fait qu'une expression peut être remplacée par son résultat sans changer le comportement du programme.
</p>
<div class="mw-heading mw-heading4"><h4 id="Fonctionnel">Fonctionnel</h4></div>
<p>Le paradigme fonctionnel a pour principe l'évaluation de formules, afin d'utiliser le résultat pour d'autres calculs ; il s'appuie sur la <a href="Algorithme_r%C3%A9cursif" title="Algorithme récursif">récursivité</a> et il a pour modèle le <a href="Lambda-calcul" title="Lambda-calcul">lambda-calcul</a>, plus précisément la <a href="Machine_de_Krivine" title="Machine de Krivine">réduction en forme normale de tête</a>. Tous les calculs évaluent des expressions ou font appel à des fonctions. Pour simplifier<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>, le résultat d'un calcul sert pour le calcul ou les calculs qui ont besoin de son résultat jusqu'à ce que la fonction qui produit le résultat du programme ait été évaluée<sup id="cite_ref-jana_14-3" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. Le paradigme fonctionnel a été introduit par les langages <a href="Lisp_(langage)" class="mw-redirect" title="Lisp (langage)">Lisp</a> et <a href="ISWIM" title="ISWIM">ISWIM</a> ainsi qu'en ce qui concerne les fonctions récursives par <a href="Algol_(langage)" title="Algol (langage)">Algol 60</a>, dans les années 1960. Des langages tels que <a href="Ruby" title="Ruby">Ruby</a> et <a href="Scala_(langage)" title="Scala (langage)">Scala</a> supportent plusieurs paradigmes dont le paradigme fonctionnel<sup id="cite_ref-bansal_13-6" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>, tandis qu'<a href="Haskell" title="Haskell">Haskell</a> ne supporte que le paradigme fonctionnel et <a href="OCaml" title="OCaml">OCaml</a> privilégie le paradigme fonctionnel qu'il partage avec le paradigme objet et une petite dose d'impératif.
</p>
<div class="mw-heading mw-heading4"><h4 id="Logique">Logique</h4></div>
<p>Le paradigme logique vise à répondre à une question par des recherches dans un ensemble, en utilisant des axiomes, des requêtes et des règles de déduction. L'exécution d'un programme est une cascade de recherches de faits dans un ensemble, en invoquant des règles de déduction. Les données obtenues, peuvent être associées à un autre ensemble de règles et peuvent alors être utilisées dans le cadre d'une autre recherche. L'exécution du programme se fait par évaluation : le système effectue une recherche de toutes les affirmations qui, par déduction, correspondent à au moins un élément de l'ensemble. Le programmeur exprime les règles, et le système pilote le processus<sup id="cite_ref-jana_14-4" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. Le paradigme logique a été introduit par le langage <a href="Prolog" title="Prolog">Prolog</a> en 1970<sup id="cite_ref-bansal_13-7" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Orienté_objet"><span id="Orient.C3.A9_objet"></span>Orienté objet</h3></div>
<p>Le paradigme orienté objet est destiné à faciliter le découpage d'un grand programme en plusieurs modules isolés les uns des autres. Il introduit les notions d'objet et d'héritage. Un objet contient les variables et les fonctions en rapport avec un sujet. Les variables peuvent être <i>privées</i>, c'est-à-dire qu'elles peuvent être manipulées uniquement par l'objet qui les contient. Un objet contient implicitement les variables et les fonctions de ses ancêtres, et cet <i>héritage</i> aide à réutiliser du code<sup id="cite_ref-bansal_13-8" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Le paradigme orienté objet permet d'associer fortement les données avec les procédures<sup id="cite_ref-jana_14-5" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. Il a été introduit par le langage <a href="Simula" title="Simula">Simula</a> dans les années 1960 et est devenu populaire dans les années 1980, quand l'augmentation de la puissance de calcul des ordinateurs a permis d'exécuter des grands programmes<sup id="cite_ref-bansal_13-9" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Divers langages de programmation ont été enrichis en vue de permettre la programmation orientée objet ; c'est le cas de <a href="C%2B%2B" title="C++">C++</a> (dérivé du langage <a href="C_(langage)" title="C (langage)">C</a><sup id="cite_ref-bansal_13-10" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>), <a href="Simula" title="Simula">Simula</a>, <a href="Smalltalk" title="Smalltalk">Smalltalk</a>, <a href="Swift_(langage_d'Apple)" title="Swift (langage d'Apple)">Swift</a> et <a href="Java_(langage)" title="Java (langage)">Java</a> sont des langages de programmation en paradigme orienté objet<sup id="cite_ref-jana_14-6" class="reference"><a href="#cite_note-jana-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Concurrent">Concurrent</h3></div>
<p>En paradigme concurrent un programme peut effectuer plusieurs tâches en même temps. Ce paradigme introduit les notions de <a href="Thread_(informatique)" title="Thread (informatique)">thread</a>, d'attente active et d'appel de fonction à distance<sup id="cite_ref-bansal_13-11" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Ces notions ont été introduites dans les années 1980 lorsque, à la suite de l'évolution technologique, un ordinateur est devenu une machine comportant plusieurs processeurs et capable d'effectuer plusieurs tâches simultanément. Les langages de programmation contemporains de 2013 tels que <a href="C%2B%2B" title="C++">C++</a> et <a href="Java_(langage)" title="Java (langage)">Java</a> sont adaptés aux <a href="Microprocesseur_multi-c%C5%93ur" title="Microprocesseur multi-cœur">microprocesseurs multi-cœur</a> et permettent de créer et manipuler des threads<sup id="cite_ref-bansal_13-12" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Plus récemment, on a vu apparaître des langages intégralement orientés vers la gestion de la concurrence, comme le langage <a href="Go_(langage)" title="Go (langage)">Go</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Visuel">Visuel</h3></div>
<p>Dans la grande majorité des langages de programmation, le code source est un texte, ce qui rend difficile l'expression des objets bidimensionnels<sup id="cite_ref-bansal_13-13" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Un langage de programmation tel que <a href="Delphi_(langage)" title="Delphi (langage)">Delphi</a> ou <a href="C_sharp" class="mw-redirect" title="C sharp">C#</a> permet de manipuler des objets par <a href="Glisser-d%C3%A9poser" title="Glisser-déposer">glisser-déposer</a> et le dessin ainsi obtenu est ensuite traduit en une représentation textuelle orientée objet et événementielle. Le paradigme visuel a été introduit à la fin des années 1980 par <a href="Alan_Kay" title="Alan Kay">Alan Kay</a> dans le langage <a href="Smalltalk" title="Smalltalk">Smalltalk</a>, dans le but de faciliter la programmation des <a href="Interfaces_graphiques" class="mw-redirect" title="Interfaces graphiques">interfaces graphiques</a><sup id="cite_ref-bansal_13-14" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Événementiel"><span id=".C3.89v.C3.A9nementiel"></span>Événementiel</h3></div>
<p>Alors qu'un programme interactif pose une question et effectue des actions en fonction de la réponse, en style événementiel le programme n'attend rien et est exécuté lorsque quelque chose s'est passé<sup id="cite_ref-bansal_13-15" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Par exemple, l'utilisateur déplace la souris ou presse sur un bouton. Dans ce paradigme, la programmation consiste à décrire les actions à prendre en réponse aux événements. Et une action peut en cascade déclencher une autre action correspondant à un autre évènement<sup id="cite_ref-bansal_13-16" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Le paradigme événementiel a été introduit par le langage <a href="Simula" title="Simula">Simula</a> dans les années 1970. Il est devenu populaire à la suite de l'avènement des interfaces graphiques et des applications web<sup id="cite_ref-bansal_13-17" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Basé_web"><span id="Bas.C3.A9_web"></span>Basé web</h3></div>
<p>Avec l’avènement de l'<a href="Internet" title="Internet">Internet</a> dans les années 1990, les données, les images ainsi que le code s'échangent entre ordinateurs. Si un résultat est demandé à un ordinateur, celui-ci peut exécuter le programme nécessaire et envoyer le résultat. Il peut également envoyer le code nécessaire à l'ordinateur client pour qu'il calcule le résultat lui-même<sup id="cite_ref-bansal_13-18" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. Le programme est rarement traduit en <a href="Langage_machine" title="Langage machine">langage machine</a>, mais plutôt interprété ou traduit en une forme intermédiaire, le <a href="Bytecode" title="Bytecode">bytecode</a>, qui sera exécuté par une <a href="Machine_virtuelle" title="Machine virtuelle">machine virtuelle</a>, ou traduit en langage machine au moment de l'exécution (<i>just-in-time</i>). Java, <a href="PHP" title="PHP">PHP</a> et <a href="Javascript" class="mw-redirect" title="Javascript">Javascript</a> sont des langages de programmation basée web<sup id="cite_ref-bansal_13-19" class="reference"><a href="#cite_note-bansal-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Mise_en_œuvre"><span id="Mise_en_.C5.93uvre"></span>Mise en œuvre</h2></div>
<p>L'utilisation d'un langage est rendue possible par un traducteur automatique. Un programme qui prend un texte écrit dans ce langage pour en faire quelque chose, en général soit :
</p>
<div class="mw-heading mw-heading3"><h3 id="Un_compilateur">Un <i><a href="Compilateur" title="Compilateur">compilateur</a></i></h3></div>
<p>Un <a href="Programme_(informatique)" class="mw-redirect" title="Programme (informatique)">programme</a> qui traduit le texte dans un langage qui permettra son exécution, tel le <a href="Langage_machine" title="Langage machine">langage machine</a>, le <a href="Bytecode" title="Bytecode">bytecode</a> ou le <a href="Langage_assembleur" class="mw-redirect" title="Langage assembleur">langage assembleur</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Un_interpréteur"><span id="Un_interpr.C3.A9teur"></span>Un <i><a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interpréteur</a></i></h3></div>
<p>Un programme qui exécute les instructions demandées. Il joue le même rôle qu'une machine qui reconnaîtrait ce langage.
</p>
<div class="mw-heading mw-heading3"><h3 id="Langage_machine">Langage machine</h3></div>
<p>Chaque appareil informatique a un ensemble d'instructions qui peuvent être utilisées pour effectuer des opérations. Les instructions permettent d'effectuer des calculs arithmétiques ou logiques, déplacer ou copier des données, ou bifurquer vers l'exécution d'autres instructions. Ces instructions sont enregistrées sous forme de séquences de bits, où chaque séquence correspond au code de l'opération à effectuer et aux opérandes, c'est-à-dire aux données concernées ; c'est le langage machine<sup id="cite_ref-CAO_19-0" class="reference"><a href="#cite_note-CAO-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>.
</p><p>La traduction s'effectue en plusieurs étapes. En premier lieu, le traducteur effectue une <a href="Analyse_lexicale" title="Analyse lexicale">analyse lexicale</a> où il identifie les éléments du langage utilisés dans le programme. Dans l'étape suivante, l'<a href="Analyse_syntaxique" title="Analyse syntaxique">analyse syntaxique</a>, le traducteur construit un diagramme en arbre qui reflète la manière dont les éléments du langage ont été combinés dans le programme, pour former des instructions. Puis, lors de l'<a href="Analyse_s%C3%A9mantique" title="Analyse sémantique">analyse sémantique</a>, le traducteur détermine s'il est possible de réaliser l'opération et les instructions qui seront nécessaires dans le langage cible<sup id="cite_ref-SPOS_20-0" class="reference"><a href="#cite_note-SPOS-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>.
</p><p>Dans le langage de programmation assembleur, des mots aide-mémoire (mnémonique) sont utilisés pour référer aux instructions de la machine. Les instructions diffèrent en fonction des constructeurs et il en va de même pour les mnémoniques. Un programme <i>assembleur</i> traduit chaque mnémonique en la séquence de bits correspondante<sup id="cite_ref-Tmh_2007_21-0" class="reference"><a href="#cite_note-Tmh_2007-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>.
</p><p>Les langages de programmation fonctionnent souvent à l'aide d'un <i>runtime</i>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Un_runtime">Un <a href="Moteur_d'ex%C3%A9cution" class="mw-redirect" title="Moteur d'exécution">runtime</a></h3></div>
<p>Un <i>runtime</i> (traduction : <i>exécuteur</i>) est un ensemble de <a href="Biblioth%C3%A8ques_logicielles" class="mw-redirect" title="Bibliothèques logicielles">bibliothèques logicielles</a> qui mettent en œuvre le langage de programmation, permettant d'effectuer des opérations simples, telles que copier des données, mais aussi des opérations beaucoup plus complexes<sup id="cite_ref-pragmatics_22-0" class="reference"><a href="#cite_note-pragmatics-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p><p>Lors de la traduction d'un programme vers le langage machine, les opérations simples sont traduites en les instructions correspondantes en langage machine tandis que les opérations complexes sont traduites en des utilisations des fonctions du <i>runtime</i>. Dans certains langages de programmation, la totalité des instructions sont traduites en des utilisations du <i>runtime</i><sup id="cite_ref-pragmatics_22-1" class="reference"><a href="#cite_note-pragmatics-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> qui sert alors d'intermédiaire entre les possibilités offertes par la plateforme informatique et les constructions propres au langage de programmation<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>.
</p><p>Chaque langage de programmation a une manière <i>conventionnelle</i> de traduire l'exécution de procédures ou de fonctions, de placer les variables en mémoire et de transmettre des paramètres. Ces conventions sont appliquées par le <i>runtime</i><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>. Les <i>runtime</i> servent également à mettre en œuvre certaines fonctionnalités avancées des langages de programmation telles que le ramasse-miettes, ou la réflexion<sup id="cite_ref-pragmatics_22-2" class="reference"><a href="#cite_note-pragmatics-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p><p>Les langages de programmation sont couramment auto-implémentés, c'est-à-dire que le compilateur pour ce langage de programmation est mis en œuvre dans le langage lui-même. Exemple : un compilateur pour le langage Pascal peut être écrit en langage Pascal<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Fonctionnalités_avancées"><span id="Fonctionnalit.C3.A9s_avanc.C3.A9es"></span>Fonctionnalités avancées</h3></div>
<p>Les fonctionnalités avancées telles que le ramasse-miettes (anglais <i>garbage collector</i>), la manipulation des exceptions, des événements ou des threads, ainsi que la liaison tardive et la réflexion sont mises en œuvre par les <i>runtime</i> des langages de programmation<sup id="cite_ref-pragmatics_22-3" class="reference"><a href="#cite_note-pragmatics-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Un_ramasse-miettes">Un <a href="Ramasse-miettes_(informatique)" title="Ramasse-miettes (informatique)">ramasse-miettes</a></h3></div>
<p>Un mécanisme qui supprime les variables inutilisées et libère l'espace mémoire qui leur avait été réservé<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Une_exception">Une <a href="Syst%C3%A8me_de_gestion_d'exceptions" title="Système de gestion d'exceptions">exception</a></h3></div>
<p>Un fait inattendu, souvent accidentel, entraîne l'échec du déroulement normal du programme, et ce fait <i>exceptionnel</i> doit être pris en charge par le programme avant de pouvoir continuer. Certains langages de programmation permettent de provoquer délibérément l'arrêt du déroulement normal du programme<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Un_évènement"><span id="Un_.C3.A9v.C3.A8nement"></span>Un évènement</h3></div>
<p>Une procédure qui va être exécutée lorsqu'une condition particulière est rencontrée. Les événements sont notamment utilisés pour mettre en œuvre les <a href="Interface_graphique" title="Interface graphique">interfaces graphiques</a><sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Un_thread">Un <a href="Thread_(informatique)" title="Thread (informatique)">thread</a></h3></div>
<p>Une suite d'instructions en train d'être exécutée. Les langages de programmation qui manipulent les <i>threads</i> permettent d'effectuer plusieurs tâches simultanément. Cette possibilité d'exécution simultanée, offerte par les systèmes d'exploitation, est également offerte en <i>allégé</i> par les <i>runtime</i> des langages de programmation<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="La_liaison_tardive">La liaison tardive</h3></div>
<p>Le procédé de <i>liaison</i> (anglais <i>late binding</i> ou <i>dynamic binding</i>) consiste à associer chaque identifiant d'un programme avec l'emplacement de mémoire concerné. Cette opération peut être effectuée lors de la traduction du programme, au cours de l'exécution du programme ou juste avant<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>, elle est dite <i>tardive</i> lorsque l'opération de liaison est effectuée très tard, juste avant que l'emplacement concerné ne soit utilisé<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="La_réflexion"><span id="La_r.C3.A9flexion"></span>La <a href="R%C3%A9flexion_(informatique)" title="Réflexion (informatique)">réflexion</a></h3></div>
<p>La possibilité pour un programme d'obtenir des informations concernant ses propres caractéristiques. Des instructions du langage de programmation permettent à un programme d'obtenir des informations sur lui-même et de les manipuler comme des données<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Une_monade">Une <a href="Monade_(informatique)" title="Monade (informatique)">monade</a></h3></div>
<p>Une structure permettant de manipuler des traits impératifs dans des langages fonctionnels purs.
</p>
<div class="mw-heading mw-heading2"><h2 id="Historique">Historique</h2></div>
<p>Bien que la notion de programme apparaisse progressivement au cours de la deuxième moitié du <abbr class="abbr" title="19ᵉ siècle"><span class="romain">XIX</span><sup style="font-size:72%">e</sup></abbr> siècle, les premiers langages de programmation n'apparaissent qu'autour de 1950<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>. Chacun pouvant créer son propre langage, il est impossible de déterminer le nombre total de langages existant à l'heure actuelle.
</p>
<div class="mw-heading mw-heading2"><h2 id="Utilisations">Utilisations</h2></div>
<p>On peut aussi classer les langages de programmation en fonction de leur utilisation, car beaucoup de langages sont spécialisés à une application ou à un domaine particulier.
</p>
<div class="mw-heading mw-heading3"><h3 id="Langages_pour_pages_Web_dynamiques">Langages pour pages Web dynamiques</h3></div>
<p>Ce type de langage est utilisé pour une plus grande interaction entre <a href="Client-serveur" title="Client-serveur">un client et un serveur</a>.
</p><p>Du côté du <a href="Serveur_web" title="Serveur web">serveur web</a>, cela permet de produire des pages dont le contenu est généré à chaque affichage. Ces langages sont par ailleurs souvent couplés avec un langage pour communiquer avec des bases de données (exemples : <a href="PHP" title="PHP">PHP</a>, <a href="LiveCode" title="LiveCode">LiveCode</a>).
</p><p>Côté client (en général le <a href="Navigateur_web" title="Navigateur web">navigateur web</a>), ces langages offrent la possibilité de réagir à certaines actions de l'utilisateur sans avoir à questionner le serveur. Par exemple, le <a href="JavaScript" title="JavaScript">JavaScript</a> d'une <a href="Page_web" title="Page web">page Web</a> peut réagir aux saisies de l'utilisateur dans un <a href="Formulaire" title="Formulaire">formulaire</a> (et vérifier le <a href="Format_des_donn%C3%A9es" class="mw-redirect" title="Format des données">format des données</a>).
</p><p>Certains langages permettent de développer à la fois les aspects client et serveur. C'est le cas d'<a href="Ocsigen" title="Ocsigen">Ocsigen</a>, de <a href="Hop_(langage)" title="Hop (langage)">Hop</a>, de <a href="Dart_(langage_informatique)" class="mw-redirect" title="Dart (langage informatique)">Dart</a> ou bien encore du <a href="JavaScript" title="JavaScript">Server-Side JavaScript</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Langages_de_programmation_théorique"><span id="Langages_de_programmation_th.C3.A9orique"></span>Langages de programmation théorique</h3></div>
<p>On désigne parfois par langage de programmation théorique les <a href="Syst%C3%A8me_formel" title="Système formel">systèmes formels</a> utilisés pour décrire de façon théorique le fonctionnement des ordinateurs. Ils ne servent pas à développer des applications, mais à représenter des modèles et démontrer certaines de leurs propriétés.
</p><p>On peut citer la <a href="Machine_de_Turing" title="Machine de Turing">machine de Turing</a> et le <a href="Lambda-calcul" title="Lambda-calcul">λ-calcul</a> de <a href="Alonzo_Church" title="Alonzo Church">Church</a>, qui datent tous les deux des années 1930, et donc antérieurs à l'invention de l'ordinateur. Le λ-calcul a par la suite servi de base théorique à la famille des <a href="Programmation_fonctionnelle" title="Programmation fonctionnelle">langages de programmation fonctionnelle</a>. Dans les années 1980, <a href="Robin_Milner" title="Robin Milner">Robin Milner</a> a mis au point le <a href="Pi-calcul" title="Pi-calcul">π-calcul</a> pour modéliser les systèmes concurrents.
</p>
<div class="mw-heading mw-heading3"><h3 id="Langages_exotiques">Langages exotiques</h3></div>
<p>Les langages exotiques ont pour but de créer des grammaires complètes et fonctionnelles, mais dans un paradigme éloigné des conventions. Beaucoup sont d'ailleurs considérés comme des blagues.
</p><p>Ces langages sont généralement difficiles à mettre en pratique et donc rarement utilisés.
</p>
<div class="mw-heading mw-heading3"><h3 id="Langages_spécialisés"><span id="Langages_sp.C3.A9cialis.C3.A9s"></span>Langages spécialisés</h3></div>
<ul><li><a href="Advanced_Boolean_Expression_Language" title="Advanced Boolean Expression Language">ABEL</a>, langage pour la programmation électronique des <a href="Circuit_logique_programmable" title="Circuit logique programmable">PLD</a>.</li>
<li><a href="CDuce" title="CDuce">CDuce</a>, langage fonctionnel d'ordre supérieur pour la manipulation de documents au format <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>.</li>
<li><a href="Forme_de_Backus-Naur" title="Forme de Backus-Naur">Forme de Backus-Naur</a> (BNF), formalisation des langages de programmation.</li>
<li><a href="PROMELA" title="PROMELA">PROMELA</a>, langage de spécification de systèmes asynchrones.</li>
<li><a href="VRML" class="mw-redirect" title="VRML">VRML</a>, description de scènes en trois dimensions.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Langages_synchrones">Langages synchrones</h4></div>
<p>Langages de programmation synchrones pour les systèmes réactifs : <a href="Esterel_(langage)" title="Esterel (langage)">Esterel</a>, <a href="Lustre_(langage)" title="Lustre (langage)">Lustre</a>, Signal.
</p>
<div class="mw-heading mw-heading4"><h4 id="Langages_à_vocation_pédagogique"><span id="Langages_.C3.A0_vocation_p.C3.A9dagogique"></span>Langages à vocation pédagogique</h4></div>
<p>Les <a href="Pseudo-code" title="Pseudo-code">pseudo-codes</a> ont généralement un but uniquement pédagogique.
</p>
<ul><li><a href="Logo_(langage)" title="Logo (langage)">Logo</a> est un langage fonctionnel simple à apprendre.</li>
<li>Dans les années 1990, le langage <a href="BASIC" class="mw-redirect" title="BASIC">BASIC</a> était souvent conseillé pour débuter. Il avait cependant la réputation de favoriser la prise de mauvaises habitudes de programmation.</li>
<li>Le <a href="Processing" title="Processing">Processing</a> est un langage simplifié qui s'appuie sur Java. Il permet un développement d'applications fenêtrées sur tout type d'ordinateur équipé de Java.</li>
<li>L'<a href="Arduino" title="Arduino">Arduino</a> est un langage simplifié s'appuyant sur C/C++. Il permet un développement simple de projets électroniques à partir de carte Arduino (AVR).</li>
<li>L'ArduinoEDU est un langage encore plus simple, en français, pour les grands débutants s'appuyant sur le langage C/C++/Arduino. Il permet un développement très simple de projets électroniques à partir de cartes Arduino (AVR).</li>
<li><a href="Flowgorithm" title="Flowgorithm">Flowgorithm</a> est un outil de création et modification graphique de programmes informatiques sous forme d'Algorigramme.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Langages_pour_l'électronique_numérique"><span id="Langages_pour_l.27.C3.A9lectronique_num.C3.A9rique"></span>Langages pour l'électronique numérique</h4></div>
<ul><li><a href="Verilog" title="Verilog">Verilog</a>, <a href="VHDL" title="VHDL">VHDL</a> : langages de description matérielle, permettant de synthétiser de l'électronique numérique (descriptions de portes logiques) et d'en simuler le fonctionnement.</li>
<li><a href="SystemC" title="SystemC">SystemC</a>, langage de description matérielle de plus haut niveau que les précédents et permettant une simulation plus rapide.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Langages_pour_la_statistique">Langages pour la statistique</h4></div>
<p>Ces langages sont conçus pour lire des fichiers de données de grande taille, pouvant se présenter sous une grande variété de formats. Ils comportent en outre une bibliothèque spécialisée dans les traitements statistiques non élémentaires (régressions multivariées, <a href="Analyse_en_composantes_principales" title="Analyse en composantes principales">ACP</a>, filtres <a href="ARMA" title="ARMA">ARMA</a>, etc.), contrairement aux <a href="Tableur" title="Tableur">tableurs</a>, qui n'offrent que des traitements élémentaires opérant sur moins de 100 000 données environ.
Les plus connus : <a href="R_(langage)" title="R (langage)">R</a>, <a href="SAS_(langage)" title="SAS (langage)">SAS</a> et <a href="XLispStat" title="XLispStat">xLispStat</a>, sont à la fois des langages de programmation et des <a href="Interpr%C3%A9teur_de_commandes" title="Interpréteur de commandes">interpréteurs de script</a>, utilisables en <a href="Ligne_de_commande" class="mw-redirect" title="Ligne de commande">ligne de commande</a>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Langages_de_programmation_de_Commande_Numérique_(C.N.)"><span id="Langages_de_programmation_de_Commande_Num.C3.A9rique_.28C.N..29"></span>Langages de programmation de Commande Numérique (C.N.)</h4></div>
<p>Une <a href="Machine-outil" title="Machine-outil">machine-outil</a> automatisée, ou Commande Numérique (C.N.), a besoin d'un langage de programmation pour réaliser les opérations de <a href="Tournage_m%C3%A9canique" title="Tournage mécanique">tournage</a> ou de <a href="Fraisage" title="Fraisage">fraisage</a>…
</p>
<div class="mw-heading mw-heading4"><h4 id="Langages_de_programmation_des_automates_programmables_industriels_(API)"><span id="Langages_de_programmation_des_automates_programmables_industriels_.28API.29"></span>Langages de programmation des <a href="Automate_programmable_industriel" title="Automate programmable industriel">automates programmables industriels (API)</a></h4></div>
<ul><li><span class="lang-en" lang="en"><i><a href="Sequential_function_chart" title="Sequential function chart">Sequential function chart</a></i></span>, langage graphique, dérivé du <a href="Grafcet" title="Grafcet">grafcet</a> (NB : le grafcet définit les spécifications de façon graphique).</li>
<li><a href="Langage_Ladder" title="Langage Ladder">Langage Ladder</a>, <a href="Langage_graphique" title="Langage graphique">langage graphique</a>.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="Langages_de_programmation_audio">Langages de programmation audio</h4></div>
<p><a href="Nyquist_(langage)" title="Nyquist (langage)">Nyquist</a> est un langage de synthèse et d'analyse sonore. <a href="Pure_Data" title="Pure Data">Pure Data</a> est un logiciel de création musicale graphique qui repose sur un langage de programmation procédural.
</p>
<div class="mw-heading mw-heading2"><h2 id="Performances">Performances</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Étude_comparative_de_27_langages"><span id=".C3.89tude_comparative_de_27_langages"></span>Étude comparative de 27 langages</h3></div>
<p>Six chercheurs de trois universités portugaises ont mené une étude comparative de 27 langages de programmation, intitulée « Energy Efficiency Across Programming Languages ». Ils ont étudié la consommation d'énergie, le temps d'exécution et l'utilisation de la mémoire. Pour obtenir un ensemble de programmes comparables, les chercheurs ont exploré le Computer Language Benchmarks Game (CLBG).
</p><p>Le tableau obtenu présente les résultats globaux (en moyenne) pour la consommation d'énergie (Energy), le temps d'exécution (Time) et la consommation maximale de la mémoire (Mb) normalisés par rapport au langage le plus efficace pour le critère mesuré.
</p><p>Les cinq meilleurs langages sont<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup> :
</p>
<div class="mw-heading mw-heading3"><h3 id="Pour_la_consommation_d'énergie"><span id="Pour_la_consommation_d.27.C3.A9nergie"></span>Pour la consommation d'énergie</h3></div>
<ul><li>C : 1,00</li>
<li>Rust : 1,03</li>
<li>C++ : 1,34</li>
<li>Ada : 1,70</li>
<li>Java : 1,98</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Pour_le_temps_d'exécution"><span id="Pour_le_temps_d.27ex.C3.A9cution"></span>Pour le temps d'exécution</h3></div>
<ul><li>C : 1,00</li>
<li>Rust : 1,04</li>
<li>C++ : 1,56</li>
<li>Ada : 1,85</li>
<li>Java : 1,89</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Pour_la_consommation_maximale_de_mémoire"><span id="Pour_la_consommation_maximale_de_m.C3.A9moire"></span>Pour la consommation maximale de mémoire</h3></div>
<ul><li><i><a href="Pascal_(langage)" title="Pascal (langage)">Pascal</a></i> : 1,00</li>
<li><i><a href="Go_(langage)" title="Go (langage)">Go</a></i> : 1,05</li>
<li><i><a href="C_(langage)" title="C (langage)">C</a></i> : 1,17</li>
<li><i><a href="Fortran" title="Fortran">Fortran</a></i> : 1,24</li>
<li><i><a href="C%2B%2B" title="C++">C++</a></i> : 1,34</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Popularité"><span id="Popularit.C3.A9"></span>Popularité</h2></div>
<p>La popularité de chaque langage est difficilement quantifiable ; néanmoins, il existe l'<a href="Index_TIOBE" title="Index TIOBE">index TIOBE</a>, calculé mensuellement, qui se base sur le nombre de formations/cours destinée aux ingénieurs et le nombre de revendeurs/free-lance spécialisés dans un langage de programmation. C'est une information parcellaire, mais qui peut donner un ordre d'idée sur les tendances en matière de préférence des programmeurs.
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-gabbrielli-1"><span class="mw-cite-backlink"><a href="#cite_ref-gabbrielli_1-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="GabbrielliMartini2010"><span class="ouvrage" id="Maurizio_GabbrielliSimone_Martini2010"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Maurizio <span class="nom_auteur">Gabbrielli</span> et Simone <span class="nom_auteur">Martini</span>, <cite class="italique" lang="en">Programming Languages: Principles and Paradigms</cite>, <a href="Springer_Verlag" class="mw-redirect" title="Springer Verlag">Springer</a>, <time>2010</time> <small>[détail des éditions]</small> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781848829138</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Programming+Languages%3A+Principles+and+Paradigms&rft.pub=Springer&rft.aulast=Gabbrielli&rft.aufirst=Maurizio&rft.au=Martini%2C+Simone&rft.date=2010&rft.isbn=9781848829138&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-louden-2"><span class="reference-text"><span class="ouvrage" id="LoudenLambert2011"><span class="ouvrage" id="Kenneth_C._LoudenKenneth_A._Lambert2011"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Kenneth C. <span class="nom_auteur">Louden</span> et Kenneth A. <span class="nom_auteur">Lambert</span>, <cite class="italique" lang="en">Programming Languages: Principles and Practices</cite>, Cengage Learning, <time>2011</time> <small>[détail des éditions]</small> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781111529413</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Programming+Languages%3A+Principles+and+Practices&rft.pub=Cengage+Learning&rft.aulast=Louden&rft.aufirst=Kenneth+C.&rft.au=Lambert%2C+Kenneth+A.&rft.date=2011&rft.isbn=9781111529413&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-baindridge-3"><span class="reference-text"><span class="ouvrage" id="Bainbridge1994"><span class="ouvrage" id="William_Sims_Bainbridge1994"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> William Sims <span class="nom_auteur">Bainbridge</span>, <cite class="italique" lang="en">Berkshire Encyclopedia of Human-computer Interaction</cite>, <abbr class="abbr" title="volume">vol.</abbr> 2, Berkshire Publishing Group LLC, <time>1994</time> <small>[détail des éditions]</small> <small style="line-height:1em;">(<a rel="nofollow" class="external text" href="http://www.interaction-design.org/printerfriendly/encyclopedia/human_computer_interaction_hci.html">lire en ligne</a>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Berkshire+Encyclopedia+of+Human-computer+Interaction&rft.pub=Berkshire+Publishing+Group+LLC&rft.aulast=Bainbridge&rft.aufirst=William+Sims&rft.date=1994&rft.volume=2&rft_id=http%3A%2F%2Fwww.interaction-design.org%2Fprinterfriendly%2Fencyclopedia%2Fhuman_computer_interaction_hci.html&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-watt-4"><span class="mw-cite-backlink"><a href="#cite_ref-watt_4-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="WattFindlay2004"><span class="ouvrage" id="David_Anthony_WattWilliam_Findlay2004"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> David Anthony <span class="nom_auteur">Watt</span> et William <span class="nom_auteur">Findlay</span>, <cite class="italique" lang="en">Programming Language Design Concepts</cite>, John Wiley & Sons, <time>2004</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780470853207</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Programming+Language+Design+Concepts&rft.pub=John+Wiley+%26+Sons&rft.aulast=Watt&rft.aufirst=David+Anthony&rft.au=Findlay%2C+William&rft.date=2004&rft.isbn=9780470853207&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text"><span class="ouvrage" id="CoriMarandin2001"><span class="ouvrage" id="Marcel_CoriJean-Marie_Marandin2001">Marcel <span class="nom_auteur">Cori</span> et Jean-Marie <span class="nom_auteur">Marandin</span>, « <cite style="font-style:normal">La linguistique au contact de l'informatique : de la construction des grammaires aux grammaires de construction</cite> », <i>Histoire Épistémologie Langage</i>, <abbr class="abbr" title="volume">vol.</abbr> 23, <abbr class="abbr" title="numéro">n<sup>o</sup></abbr> 1, <time>2001</time>, <abbr class="abbr" title="pages">p.</abbr> <span class="nowrap">49–79</span> <small style="line-height:1em;">(<a href="Digital_Object_Identifier" title="Digital Object Identifier">DOI</a> <span class=" noarchive nowrap"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.3406/hel.2001.2817">10.3406/hel.2001.2817</a></span>, <a rel="nofollow" class="external text" href="https://www.persee.fr/doc/hel_0750-8069_2001_num_23_1_2817">lire en ligne</a>, consulté le <time class="nowrap" datetime="2020-10-13" data-sort-value="2020-10-13">13 octobre 2020</time>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=La+linguistique+au+contact+de+l%27informatique+%3A+de+la+construction+des+grammaires+aux+grammaires+de+construction&rft.jtitle=Histoire+%C3%89pist%C3%A9mologie+Langage&rft.issue=1&rft.aulast=Cori&rft.aufirst=Marcel&rft.au=Marandin%2C+Jean-Marie&rft.date=2001&rft.volume=23&rft.pages=49%E2%80%9379&rft_id=info%3Adoi%2F10.3406%2Fhel.2001.2817&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://hal.archives-ouvertes.fr/docs/00/51/02/81/PDF/Lando_FA_rst_Kassel_Lapujade.pdf">Premiers pas vers une ontologie générale des programmes informatiques, Pascal Lando, Frédéric Fürst, Gilles Kassel et Anne Lapujade, "18es Journées Francophones d'Ingénierie des Connaissances, Grenoble : France (2007)", voir section 3.2</a> <i>La première catégorie de langages informatiques est celle des langages informatiques généralistes (<a href="Anglais" title="Anglais">anglais</a> : <span class="lang-en" lang="en">general purpose computer languages</span>), c’est-à-dire les langages Turing-complets</i>... <i>Les langages de programmation (<a href="Anglais" title="Anglais">anglais</a> : <span class="lang-en" lang="en">programming languages</span>), ou langages de haut niveau, sont tous les langages généralistes</i></span>
</li>
<li id="cite_note-kedar-7"><span class="reference-text"><span class="ouvrage" id="Kedar2002"><span class="ouvrage" id="Seema_Kedar2002"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Seema <span class="nom_auteur">Kedar</span>, <cite class="italique" lang="en">Programming Paradigms And Methodology</cite>, Technical Publications, <time>2002</time> <small>[détail des éditions]</small> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788184312966</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Programming+Paradigms+And+Methodology&rft.aulast=Kedar&rft.aufirst=Seema&rft.date=2002&rft.isbn=9788184312966&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-ITL-8"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> I. T. L. Education Solutions Limited, <i>Introduction To Information Technology</i>, Pearson Education India, 2005 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788177581188</span>)</small></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> R. J. Barlow et A. R. Barnett, <i>Computing for Scientists: Principles of Programming with Fortran 90 and C++</i>, John Wiley and Sons, 1998 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780471955962</span>)</small></span>
</li>
<li id="cite_note-thakare-10"><span class="reference-text"><span class="ouvrage" id="KedarThakare2009"><span class="ouvrage" id="Seema_KedarSanjay_Thakare2009"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Seema <span class="nom_auteur">Kedar</span> et Sanjay <span class="nom_auteur">Thakare</span>, <cite class="italique" lang="en">Principles of Programming Languages</cite>, Technical Publications, <time>2009</time> <small>[détail des éditions]</small> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788184315776</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Principles+of+Programming+Languages&rft.pub=Technical+Publications&rft.aulast=Kedar&rft.aufirst=Seema&rft.au=Thakare%2C+Sanjay&rft.date=2009&rft.isbn=9788184315776&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr><i>ADA Programming</i>, Tyrarex Press <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781449991999</span>)</small></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Krishnamurthy, <i>Data Structures Using C</i>, Tata McGraw-Hill Education, 2008 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780070669192</span>)</small></span>
</li>
<li id="cite_note-bansal-13"><span class="reference-text">,Arvind Kumar Bansal, <i>Introduction to Programming Languages</i>, CRC Press - 2013 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781466565142</span>)</small></span>
</li>
<li id="cite_note-jana-14"><span class="reference-text"><span class="ouvrage" id="Jana2008"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <span class="nom_auteur">Jana</span>, <cite class="italique" lang="en">Java And Object-Oriented Programming Paradigm</cite>, PHI Learning Pvt. Ltd., <time>2008</time> <small>[détail des éditions]</small> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788120327757</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Java+And+Object-Oriented+Programming+Paradigm&rft.pub=PHI+Learning+Pvt.+Ltd.&rft.aulast=Jana&rft.date=2008&rft.isbn=9788120327757&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://interstices.info/le-modele-darchitecture-de-von-neumann/"><cite style="font-style:normal;">Le modèle d’architecture de von Neumann</cite></a> », sur <span class="italique">interstices.info</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2020-10-13" data-sort-value="2020-10-13">13 octobre 2020</time>)</small></span></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a> </span><span class="reference-text">Une machine abstraite pour le paradigme fonctionnel peut être la <a href="Machine_de_Krivine" title="Machine de Krivine">machine de Krivine</a>.</span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a> </span><span class="reference-text">Si l'on est dans du fonctionnel pur ou dans du logique pur.</span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a> </span><span class="reference-text">Dans le cadre de l'appel par nécessité, l'explication qui suit est sommaire.</span>
</li>
<li id="cite_note-CAO-19"><span class="mw-cite-backlink"><a href="#cite_ref-CAO_19-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="GodseGodse2007"><span class="ouvrage" id="D.A._GodseA.P._Godse2007"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> D.A. <span class="nom_auteur">Godse</span> et A.P. <span class="nom_auteur">Godse</span>, <cite class="italique" lang="en">Computer Architecture & Organisation</cite>, Technical Publications, <time>2007</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">8184317719</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Computer+Architecture+%26+Organisation&rft.pub=Technical+Publications&rft.aulast=Godse&rft.aufirst=D.A.&rft.au=Godse%2C+A.P.&rft.date=2007&rft.isbn=8184317719&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span></span>
</li>
<li id="cite_note-SPOS-20"><span class="mw-cite-backlink"><a href="#cite_ref-SPOS_20-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Dhamdhere2011"><span class="nom_auteur">Dhamdhere</span>, <cite class="italique">Systems Programming and Operating Systems</cite>, Tata McGraw-Hill Education, <time>2011</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780074635797</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Systems+Programming+and+Operating+Systems&rft.pub=Tata+McGraw-Hill+Education&rft.aulast=Dhamdhere&rft.date=2011&rft.isbn=9780074635797&rfr_id=info%3Asid%2Ffr.wikipedia.org%3ALangage+de+programmation"></span></span></span>
</li>
<li id="cite_note-Tmh_2007-21"><span class="mw-cite-backlink"><a href="#cite_ref-Tmh_2007_21-0">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Tmh, <i>Computer Science Vii (Tn)</i>, Tata McGraw-Hill Education, 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780070668034</span>)</small></span>
</li>
<li id="cite_note-pragmatics-22"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Michael L. Scott, <i>Programming Language Pragmatics</i>, Morgan Kaufmann, 2009 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780123745149</span>)</small></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><a href="#cite_ref-23">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Ian Griffiths, Matthew Adams, <i>.Net Windows Forms in a Nutshell</i>, O'Reilly Media, Inc., 2003 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780596003388</span>)</small></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Raghavan, <i>Prin Of Compiler Design</i>, Tata McGraw-Hill Education, 2010 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780070144712</span>)</small></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><a href="#cite_ref-25">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Diomidis Spinellis et Georgios Gousios, <i>Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design</i>, O'Reilly Media Inc., 2009 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780596517984</span>)</small></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><a href="#cite_ref-26">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Chris Smith, <i>Programming F#</i>, O'Reilly Media, Inc., 2009 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780596153649</span>)</small></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><a href="#cite_ref-27">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Jeff Friesen, Geoff Friesen, <i>Java 2 by Example</i>, Que Publishing, 2002 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780789725936</span>)</small></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><a href="#cite_ref-28">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Harold Davis, <i>Visual Basic 6 Secrets</i>, Harold Davis, 1998 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780764532238</span>)</small></span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><a href="#cite_ref-29">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Brent B. Welch, Ken Jones, Jeffrey Hobbs, <i>Practical Programming in Tcl and Tk</i>, Prentice Hall Professional, 2003 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780130385604</span>)</small></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><a href="#cite_ref-30">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Sibsankar Haldar, Alex A. Aravind, <i>Operating Systems</i>,Pearson Education India - 2010, <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788131730225</span>)</small></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><a href="#cite_ref-31">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Amit Singh, <i>Mac OS X Internals: A Systems Approach</i>, Addison-Wesley Professional, 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780321278548</span>)</small></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><a href="#cite_ref-32">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Kishori Sharan, <i>Harnessing Java 7: A Comprehensive Approach to Learning Java 7</i>, Kishori Sharan, 2011 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781466244641</span>)</small></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><a href="#cite_ref-33">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://www.albertschool.com/blog/une-breve-histoire-des-langages-de-programmation"><cite style="font-style:normal;">Une brève histoire des langages de programmation</cite></a> », sur <span class="italique">www.albertschool.com</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2024-11-19" data-sort-value="2024-11-19">19 novembre 2024</time>)</small></span></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><a href="#cite_ref-34">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="https://programmation.developpez.com/actu/253829/Programmation-une-etude-revele-les-langages-les-plus-voraces-en-energie-Perl-Python-et-Ruby-en-tete-C-Rust-et-Cplusplus-les-langages-les-plus-verts/">Programmation : une étude révèle les langages les plus voraces en énergie</a></span>
</li>
</ol></div>
</div>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<style data-mw-deduplicate="TemplateStyles:r194021218">
/* start https://fr.wikipedia.org/ */
.mw-parser-output .autres-projets>.titre{text-align:center;margin:0.2em 0}.mw-parser-output .autres-projets>ul{margin:0;padding:0}.mw-parser-output .autres-projets>ul>li{list-style:none;margin:0.2em 0;text-indent:0;padding-left:24px;min-height:20px;text-align:left;display:block}.mw-parser-output .autres-projets>ul>li>a{font-style:italic}@media(max-width:720px){.mw-parser-output .autres-projets{float:none}}
/* end https://fr.wikipedia.org/ */
</style>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="Liste_de_langages_de_programmation" title="Liste de langages de programmation">Liste de langages de programmation</a></li>
<li><a href="Chronologie_des_langages_de_programmation" title="Chronologie des langages de programmation">Chronologie des langages de programmation</a></li>
<li><a href="Identificateur" title="Identificateur">Identificateur</a></li>
<li><a href="Turing-complet" title="Turing-complet">Turing-complet</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<p class="mw-empty-elt">
</p>
<ul><li class="mw-empty-elt"></li>
<li class="mw-empty-elt"></li>
<li><div class="liste-horizontale"><span class="wd_identifiers">Notices dans des dictionnaires ou encyclopédies généralistes</span> : <ul><li><a rel="nofollow" class="external text" href="https://www.britannica.com/technology/computer-programming-language"><i>Britannica</i></a></li> <li><a rel="nofollow" class="external text" href="https://denstoredanske.lex.dk//programmeringssprog/"><i>Den Store Danske Encyklopædi</i></a></li> <li><a rel="nofollow" class="external text" href="https://www.larousse.fr/encyclopedie/divers/wd/187281"><i>Larousse</i></a></li> <li><a rel="nofollow" class="external text" href="https://snl.no/programmeringsspr%C3%A5k"><i>Store norske leksikon</i></a></li> <li><a rel="nofollow" class="external text" href="http://www.treccani.it/enciclopedia/linguaggio-di-programmazione"><i>Treccani</i></a></li> </ul></div></li>
<li><div class="liste-horizontale"><span class="wd_identifiers"><a href="Autorit%C3%A9_(sciences_de_l'information)" title="Autorité (sciences de l'information)">Notices d'autorité</a></span> : <ul><li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://catalogue.bnf.fr/ark:/12148/cb13318353n">BnF</a></span> (<span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://data.bnf.fr/ark:/12148/cb13318353n">données</a></span>)</li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="http://id.loc.gov/authorities/sh85107313">LCCN</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="http://d-nb.info/gnd/4047409-4">GND</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://id.ndl.go.jp/auth/ndlna/00569224">Japon</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph115890">Tchéquie</a></span></li> </ul></div></li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-09-07" href="https://fr.wikipedia.org/wiki/?title=Langage_de_programmation&oldid=228791151">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>